/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package svpo;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.RandomAccessFile;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author RODRIGO
 */
public class CadastraEmpresa {
    private static Logger log = Logger.getLogger(CadastraEmpresa.class.getName());
     private static RandomAccessFile arquivo;
        private String nomeArq = "emp2.txt";
        
        Empresa emp = new Empresa();
     /**==============================================================================
         * Salva dados de Administrador
         * @param administrador
         * @author RODRIGO
     ==============================================================================*/
   public void salvar(String nome, String cnpj, String logo){
       try{
           arquivo = new RandomAccessFile (new File(nomeArq), "rw");
       }catch(FileNotFoundException e){
            log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ARQUIVO INEXISTENTE"));
       }

        try{
            //administrador = getAdministrador();
            arquivo.seek(arquivo.length());

            arquivo.writeBytes(nome+"\n");
            arquivo.writeBytes(cnpj+"\n");
            arquivo.writeBytes(logo+"\n");
            arquivo.writeBytes("1"+"\n");
            
            
            arquivo.seek(0);
            
           }catch(IOException e){
                        log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERRO AO ESCREVER NO ARQUIVO!"));
            }

       }
   /**==============================================================================
         * Salva Verifica Existência de CPF de administrador
         * @param String cpf
          
         *@return posicao - existe; 0 - n existe;    
         * @author RODRIGO
     ==============================================================================*/
   public int VerificaEmp(String cpf){
      
     
       
         int aux1=0;
         //Declaracao do objeto "RandomAccessFile" (arquivo que ser� manipulado)
        try {
            arquivo = new RandomAccessFile(new File(nomeArq),"r");
        }
        catch (FileNotFoundException e) {
        //No caso do arquivo nao existir
        log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ARQUIVO INEXISTENTE"));
        aux1=-1;
        return 0;
        }
        if(aux1==0){
            try {
                int aux2=0;
                do{

                    emp.setNome(arquivo.readLine());
                    emp.setCnpj(arquivo.readLine());
                    emp.setLogo(arquivo.readLine());
                    emp.setStatus(Integer.parseInt(arquivo.readLine()));
                    
                    
                   
                    aux2++;
                    if(    emp.getCnpj() == null ? cpf == null : emp.getCnpj().equals(cpf)){
                        if(emp.getStatus()==1)
                    	return aux2;
                        
                         
                    }
                }while((aux2 < Nlinhas (nomeArq, 4)));
            }
            catch (IOException e) {
            //No caso de um erro ao ler do arquivo
            System.out.println(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERRO LENDO DO ARQUIVO"));
            log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERRO AO LER ARQUIVO "));
            return 0;
            }
            
        }
        return 0;
         
     }
   /** ==============================================================================
     * Objetivo : Conta o numero de linhas de um arquivo
     * @param arq
     * @param num
     * @return numero de linhas
     * @autor RODRIGO
      ==============================================================================*/
    public int Nlinhas (String arq, int num){
        int linhas=0;
        try {
            File arquivoLeitura = new File(arq);

            // pega o tamanho
            long tamanhoArquivo = arquivoLeitura .length();
            FileInputStream fs = new FileInputStream(arquivoLeitura);
            DataInputStream in = new DataInputStream(fs);


            LineNumberReader lineRead = new LineNumberReader(new InputStreamReader(in));
            lineRead.skip(tamanhoArquivo);
            // conta o numero de linhas do arquivo, come�ando com zero, por isso adiciona 1
            linhas = lineRead.getLineNumber() + 1;


        } catch (IOException e) {
        log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ARQUIVO INEXISTENTE"));
        return 0;
        }
        if(linhas!=0) {
            linhas = ((linhas-1)/num);
        }
        return linhas;
    }
    /**
    *	 ==============================================================================
    *	 Objetivo  : Exclui dados de empresa do arquivo
    *	 Par�metros: CNPJ
    *	 @param CNPJ
    *	 @return   : nenhum
    *	 ==============================================================================
    */
    public void ExcluiEmpresa (String cnpj, int posicao){
        int cont2=0;
       
        try {
    		arquivo = new RandomAccessFile(new File("emp2.txt"),"rw");
    	}
    	catch (FileNotFoundException e) {
    		//No caso do arquivo nao existir
    		log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ARQUIVO INEXISTENTE"));
    	}
    	try {
            do{
    				if( (posicao-1) == cont2){
                                        
                                    
                                        arquivo.writeBytes(emp.getNome());
                                        arquivo.writeBytes(emp.getCnpj());
                                        arquivo.writeBytes(emp.getLogo());
                                        arquivo.writeBytes("0"+"\n");
                                        JOptionPane.showMessageDialog(null, java.util.ResourceBundle.getBundle("svpo/Bundle").getString("DADOS EXCLUIDOS COM SUCESSO!"));
                                        log.fine(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("DADOS EXCLUIDOS COM SUCESSO"));
                                    

    				}

    				emp.setNome(arquivo.readLine()) ;
    				emp.setCnpj(arquivo.readLine());
    				emp.setLogo(arquivo.readLine());
                                emp.setStatus(Integer.parseInt(arquivo.readLine()));

    				cont2++;
    			}while(posicao+1 != cont2);
    			arquivo.close();
            
        }catch (IOException e) {
       //No caso de um erro ao ler do arquivo
    		log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERRO LENDO DO ARQUIVO"));
    	}
    }
    /**==============================================================================
         * Altera dados de Empresa
         * @param String cpf
          
         *@return     
         * @author RODRIGO
     ==============================================================================*/
   public void AlteraEmpresa(String cnpj, String nome, String logo, int posicao){
      int cont2=0;
       try {
            arquivo = new RandomAccessFile(new File("aluno.txt"),"rw");
        }
        catch (FileNotFoundException e) {
            //No caso do arquivo nao existir
            log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ARQUIVO INEXISTENTE"));
        }
        try {
            do{

    				if( (posicao-1) == cont2){
    					arquivo.writeBytes(nome+"\n");
    					arquivo.writeBytes(cnpj+"\n");
    					arquivo.writeBytes(logo+"\n");
                                        arquivo.writeBytes("0"+"\n");
    				
    	    			
    					JOptionPane.showMessageDialog(null, java.util.ResourceBundle.getBundle("svpo/Bundle").getString("DADOS ALTERADOS COM SUCESSO!"));
                                        log.fine(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("DADOS ALTERADOS COM SUCESSO"));

    				}
    				emp.setNome(arquivo.readLine()) ;
    				emp.setCnpj(arquivo.readLine());
    				emp.setLogo(arquivo.readLine());
                                emp.setStatus(Integer.parseInt(arquivo.readLine()));
    				cont2++;
    			}while(posicao-1 != cont2-1);
  }

    catch (IOException e) {
       //No caso de um erro ao ler do arquivo
       log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERRO AO LER DO ARQUIVO"));
    }
   }
   
   /**==============================================================================
         * Salva Verifica Existência de CPF de administrador
         * @param String cpf
          
         *@return 1 - existe; 0 - n existe;    
         * @author RODRIGO
     ==============================================================================*/
   public Empresa PesquisaEmpresa(String cnpj){
      
     
       
         int aux1=0;
         //Declaracao do objeto "RandomAccessFile" (arquivo que ser� manipulado)
        try {
            arquivo = new RandomAccessFile(new File(nomeArq),"r");
        }
        catch (FileNotFoundException e) {
        //No caso do arquivo nao existir
        log.severe("Arquivo Inexistente");
        aux1=-1;
        return null;
        }
        if(aux1==0){
            try {
                int aux2=0;
                do{

                    emp.setNome(arquivo.readLine());
                    emp.setCnpj(arquivo.readLine());
                    emp.setLogo(arquivo.readLine());
                    emp.setStatus(Integer.parseInt(arquivo.readLine()));
                    
                    
                   
                    aux2++;
                    if(    emp.getCnpj() == null ? cnpj == null : emp.getCnpj().equals(cnpj)){
                    	if(emp.getStatus()==1)
                        return emp;
                        
                         
                    }
                }while((aux2 < Nlinhas (nomeArq, 3)));
                return null;
            }
            catch (IOException e) {
            //No caso de um erro ao ler do arquivo
            log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERRO LENDO DO ARQUIVO"));
            return null;
            }
            
        }
        return null;
         
     }
  
}
